/**
 * ajaxSubmit插件
 * autor : huanran.zhao
 * QQ: 523994553
 * date: 2015
 */
var $ajaxSubmit = {
	 
	//初始化: form表单的ajaxSubmit / a标签的ajaxSubmit
	init : function(){
		//添加pointer鼠标效果
		$('a.ajaxSubmit[link]').css('cursor','pointer');
		//form表单的ajaxSubmit
		$('form.ajaxSubmit:not(.disabled)').submit(function(){
			$ajaxSubmit.ajaxSubmit($('form.ajaxSubmit'));
			return false;
		});
		//a标签的ajaxSubmit
		$(document).on('click','a.ajaxSubmit:not(.disabled)',function(){
			//有class为confirm时跳过
			if(!$(this).hasClass('confirm')){
				$(this).addClass('disabled');
				$ajaxSubmit.aAjaxSubmit($(this));
				$(this).removeClass('disabled');
			}
			return false;
		});
		//alertUi的confirm应用ajaxSubmit
		/*使用方法: 1,a标签class="confirm ajaxSubmit"  2,lang或title文字 */
		$(document).on('click','a.confirm:not(.disabled)',function(){
			$ajaxSubmit.confirmAlink($(this));
			return false;
		});
	},
	//alertUi的confirm应用ajaxSubmit
	confirmAlink : function(obj,title){
		title = title?title:(obj.attr('lang')?obj.attr('lang'):obj.attr('title'))
		ui.confirm(
			title,//提示语(取lang或title)
			function(z){
				if(z){
					//ajaxSubmit
					if(obj.hasClass('ajaxSubmit'))
						$ajaxSubmit.aAjaxSubmit(obj);
					//允许a跳转
					else{
						if(obj.attr('target')=='_blank')//新页面打开
							window.open(obj.attr('href'), 'newwindow');
						else
							document.location.href=obj.attr('href');
					}
				}
			},
		true);
	},
	//a标签的ajaxSubmit提交接口
	aAjaxSubmit : function(obj){
		var refresh1 = obj.hasClass('refresh');//执行完成后是否需要刷新本页面
		var refresh2 = obj.hasClass('refresh_parent');//执行完成后是否需要刷新父页面
		if(!obj.attr('link')) {alert('a.ajaxSubmit的link属性不能为空');return false;}
		$.get(obj.attr('link'),{},function(obj){
			//执行结果
			if(obj.statusCode==200){
				if(obj.message!='')//obj.message有值时才提示信息
					ui.success(obj.message);
			}else
				ui.error(obj.message);
			//是否刷新页面
			if(refresh1 || refresh2){
				setTimeout(function(){
					//刷新后恢复当前滚动位置
					if($.cookie)
						$.cookie('scrollBack',true);
					//重新加载刷新本页面
					if(refresh1)
						document.location.reload();
					//重新加载刷新父页面
					else if(refresh2)
						parent.document.location.reload();
				},100);
			}
		},'json');
	},
	/**
	 * form表单提交的ajaxSubmit提交接口
	 * @param obj 表单对象 -> $('form')
	 * @param callback 回调函数
	 */
	ajaxSubmit : function(obj, callback){
		//console.log(obj.formSerialize());
		//提交按钮disable掉
		if(obj.find('[type=submit]').attr('disabled')=='disabled') return false;
		obj.find('[type=submit]').attr('disabled','disabled');
		$.ajax({
			type:'POST',
			url:obj.attr('action'),
			data:obj.serialize(),
			dataType:"json",
			success:function(result){
				try{
					var statusCode = result.statusCode.toString();
					if(statusCode==200){
						ui.success(result.message);
						setTimeout(function(){
							if(self!=top && $main.closeColorbox==true){//iframe 关闭colorbox弹窗并刷新
								if(parent.$.cookie)	parent.$.cookie('scrollBack',true);//刷新后恢复当前滚动位置
								parent.document.location.reload();
								parent.$.fn.colorbox.close();
							}else if(obj.find('input[name="URL_"]').val()){//表单隐藏域中的上一页面URL参数
								//alert($('input[name="URL_"]').val());
								document.location.href = obj.find('input[name="URL_"]').val();
							}else{//refresh
								if($.cookie)
									$.cookie('scrollBack',true);//刷新后恢复当前滚动位置
								document.location.reload();
							}
						},100);
					}
					//进度条()
					else if(statusCode.indexOf('%')>0){
						//回调函数名,从form标签中取函数_function,如找不到则默认progress函数
						fun_name = (typeof(obj.attr('_function'))!='undefined')?obj.attr('_function'):'progress';
						if(typeof(window[fun_name])=="function")//判断函数是否存在
							window[fun_name](result.message);
						//继续执行(自动翻页)
						$('input[name=page]').val(parseInt($('input[name=page]').val())+1);//页数+1
						obj.find('[type=submit]').attr('disabled',false);
						$ajaxSubmit.ajaxSubmit(obj);
					}
					else{
						obj.find('[type=submit]').attr('disabled',false);
						if(callback){//回调函数callback (callback为:函数地址)
							try{
								callback(result);
							}catch(e){
								ui.error('回调函数执行失败!' + e.message);
							}
						}else{
							ui.error(result.message?result.message:result);
						}
					}
				}catch(e){
					if(typeof(ui)!='undefined')
						ui.error('返回参数有误：'+result);
					else
						alert('返回参数有误：'+result);
					obj.find('[type=submit]').attr('disabled',false);
				}
			},
			error:function(e){
				var msg = '返回参数有误(或ajax请求失败)：<br><span style="color:#ff3c00;">'+e.responseText+'</span>';
				if(typeof(ui)!='undefined')
					ui.confirm(msg);
				else
					alert(msg);
				console.log('ajax请求失败:'+e.responseText);
				obj.find('[type=submit]').attr('disabled',false);
			}
		});
	}

};

//初始化执行
$(function(){
	$ajaxSubmit.init();
});